package com.framework.utils.property;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import com.framework.utils.property.ConfigFileManager;

/**
 * 
 * <p>Description: 远程获取配置项的值</p>
 * @since 2016年11月4日
 * @author 张飞
 * <p>Copyright:Copyright(c)2016</p>
 */
public class ConfigFileManagerSupport {

	/*
	 * 请求路径，请求过的configName
	 */
	private static Map<String, List<String>> urlCofigNames = new HashMap<String, List<String>>();
	
	/**
	 * 
	 * 方法用途: 获取配置项的值，缓存请求的地址<br>
	 * 实现步骤: <br>
	 * @param configName
	 * @param url
	 * @return
	 */
	public static Properties getConfigFileProperties(String configName, String url) {
		// 缓存请求的地址
		List<String> configNameList = urlCofigNames.get(url);
		if (configNameList == null) {
			configNameList = new ArrayList<String>();
			urlCofigNames.put(url, configNameList);
		}
		
		if (!configNameList.contains(configName)) {
			configNameList.add(configName);
		}
		return ConfigFileManager.getConfigFileProperties(configName);
	}
	
	/**
	 * 
	 * 方法用途: 请求某个目录下的所有配置项，缓存请求的地址<br>
	 * 实现步骤: <br>
	 * @param dir
	 * @param url
	 * @return
	 */
	public static Map<String, Properties> getPropertyByDirectory(String dir, String url) {
		Map<String, Properties> configPropertyMap = ConfigFileManager.getPropertyByDirectory(dir);
		if (configPropertyMap == null) {
			return configPropertyMap;
		}
		
		// 缓存请求的地址
		List<String> configNameList = urlCofigNames.get(url);
		if (configNameList == null) {
			configNameList = new ArrayList<String>();
			urlCofigNames.put(url, configNameList);
		}
		for (String configName : configPropertyMap.keySet()) {
			if (!configNameList.contains(configName)) {
				configNameList.add(configName);
			}
		}
		return configPropertyMap;
	}
}
